package model

const (
	FieldsPathNonMotorVehicle       = "NonMotorVehicleListObject.NonMotorVehicleObject"
	FieldsSinglePathNonMotorVehicle = "NonMotorVehicleObject"
)

// 非机动车对象特征属性
type NonMotorVehicle struct {
	// 车辆标识; 必选;
	NonMotorVehicleID string
	// 信息分类; 必选; 人工采集还是自动采集;required
	InfoKind InfoType
	// 来源标识; 必选; 来源图像标识;required
	SourceID string
	// 设备编码; 特定条件下必选; 设备编码，自动采集必选
	DeviceID string
	// 左上角X坐标; 特定条件下必选;required
	//车的轮廓外接矩形在画面中的位置，记录左上角坐标及右下角坐标，自动采集记录时为必选
	LeftTopX int
	// 左上角Y坐标; 特定条件下必选;required
	LeftTopY int
	// 右下角X坐标; 特定条件下必选;required
	RightBtmX int
	// 右下角Y坐标; 特定条件下必选;required
	RightBtmY int
	// 位置标记时间; 可选; 人工采集时有效;required
	MarkTime string
	// 车辆出现时间; 可选;required
	AppearTime string
	// 车辆消失时间; 可选;required
	DisappearTime string
	// 有无车牌; 必选;required
	HasPlate Boolean
	// 号牌种类; 必选;required
	PlateClass PlateClassType
	// 车牌颜色; 必选;required
	PlateColor ColorType
	// 车牌号;必选;required
	PlateNo string
	// 挂车牌号; 可选
	PlateNoAttach string
	// 车牌描述; 可选; 车牌框广告信息，包括车行名称，联系电话等
	PlateDescribe string
	// 是否套牌; 可选;
	IsDecked Boolean
	// 是否涂改; 可选;
	IsAltered Boolean
	// 是否遮挡; 可选;
	IsCovered Boolean
	// 行驶速度; 可选; 单位千米每小时（km/h）
	Speed float64
	// 行驶状态代码; 可选;
	DrivingStatusCode string
	// 车辆使用性质代码; 可选;
	UsingPropertiesCode string
	// 车辆品牌; 可选; 被标注车辆的品牌
	VehicleBrand string
	// 车辆款型; 可选; 被标注车辆的款式型号描述
	VehicleType string
	// 车辆长度; 可选; 5位整数，单位为毫米（mm）
	VehicleLength int
	// 车辆宽度; 可选; 4位整数，单位为毫米（mm）
	VehicleWidth int
	// 车辆高度; 可选; 4位整数，单位为毫米（mm）
	VehicleHeight int
	// 车身颜色; 见GA/T; 543.5中DE00308
	VehicleColor ColorType
	// 车前盖; 可选; 对车前盖的描述
	VehicleHood string
	// 车后盖; 可选; 对车后盖的描述
	VehicleTrunk string
	// 车轮; 可选; 对车轮的描述
	VehicleWheel string
	// 车轮印花纹;
	WheelPrintedPattern string
	// 车窗; 可选; 对车窗的描述
	VehicleWindow string
	// 车顶; 可选; 对车顶的描述
	VehicleRoof string
	// 车门; 可选; 对车门的描述
	VehicleDoor string
	// 车侧; 可选; 对车侧面的描述，不包括门
	SideOfVehicle string
	// 车厢; 可选; 对车厢的描述
	CarOfVehicle string
	// 后视镜; 可选; 对后视镜的描述
	RearviewMirror string
	// 底盘; 可选; 对车底盘的描述
	VehicleChassis string
	// 遮挡; 可选; 对车遮挡物的描述
	VehicleShielding string
	// 贴膜颜色; 可选; 0：深色，1：浅色，2：无
	FilmColor string
	// 改装标志; 可选; 0：未改装，1：改装
	IsModified string
	// 图像列表; 可选; 可以包含0个或者多个子图像对象
	SubImageList *SubImageInfoListObject
	// 特征值列表
	FeatureList *FeatureInfoListObject
	// 归属分类标签标识
	TabID string

	//来源视图库 id
	SourceViewID string
}

func (c *NonMotorVehicle) GetSubImageList() *SubImageInfoListObject {
	return c.SubImageList
}

func (c *NonMotorVehicle) GetFeatureList() *FeatureInfoListObject {
	return c.FeatureList
}

func (c *NonMotorVehicle) SetFeatureList(param *FeatureInfoListObject) {
	c.FeatureList = param
}

// 批量创建非机动车对象请求
type CreateNonMotorVehicleArrReq struct {
	NonMotorVehicleListObject struct {
		NonMotorVehicleObject []*NonMotorVehicle
	}
}

// 获取非机动对象列表请求(不是真正的请求参数，需要转为(key=value)的形式
type GetNonMotorVehicleArrReq struct {
	NonMotorVehicle
}

// 获取非机动对象列表响应
type GetNonMotorVehicleArrResp struct {
	//PageRecordNum             int
	//StartNum                  int
	//TotalNum                  int
	NonMotorVehicleListObject struct {
		NonMotorVehicleObject []*NonMotorVehicle
	}
}

type GetNonMotorVehicleResp struct {
	NonMotorVehicleObject *NonMotorVehicle
}
